package com.zp.self.module.level_4_算法练习.算法.二分查找;
import org.junit.Test;

/**
 * @author By ZengPeng
 */
public class 力扣_852_山脉数组的峰顶索引 {
    @Test
    public void main() {
        
        Solution solution = new 力扣_852_山脉数组的峰顶索引().new Solution();
        System.out.println(solution);
    }

    /**
     题目：符合下列属性的数组 arr 称为 山脉数组 ：
         arr.length >= 3
         存在 i（0 < i < arr.length - 1）使得：
         arr[0] < arr[1] < ... arr[i-1] < arr[i]
         arr[i] > arr[i+1] > ... > arr[arr.length - 1]
         给你由整数组成的山脉数组 arr ，返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i 。

     示例 1：
     输入：arr = [0,1,0]
     输出：1

     示例 2：
     输入：arr = [0,2,1,0]
     输出：1

     示例 3：
     输入：arr = [0,10,5,2]
     输出：1

     示例 4：
     输入：arr = [3,4,5,1]
     输出：2

     示例 5：

                 0  1   2   3  4  5  6  7  8  9
     输入：arr = [24,69,100,99,79,78,67,36,26,19]
     输出：2

     分析：【P 💔💔】
        1.二分查找：mid 值进行分析
                --执行耗时:0 ms,击败了100.00% 的Java用户
                --编码耗时: 16:50

     边界值 & 注意点：
        1.
     **/
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int peakIndexInMountainArray(int[] arr) {
        int left = 0,right = arr.length-1,mid = 0;
        while (left<=right){
            mid = left+(right-left)/2;
            if(left==mid)break;
            if(arr[mid]>arr[mid+1]  ){
               right=mid;
            }else {
                left=mid;
            }
        }
        return right;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}